package newcodercyclecontrol;

import java.util.Scanner;

public class Exercise57 {

    //    描述
//    给你一个整数n，按要求输出n∗n的回型矩阵
//    输入描述：
//    输入一行，包含一个整数n
//1<=n<=19
//    输出描述：
//    输出n行，每行包含n个正整数.
//            示例1
//    输入：
//            4
//    输出：
//            1 2 3 4
//            12 13 14 5
//            11 16 15 6
//            10 9 8 7
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int sum = 0;
        int[][] a = new int[n][n];
        int count = 0; // 数组的值
        int x = 0;
        int y = 0;
        while (count < n * n) {
            // 上面一层赋值 x不变y变
            for (int j = 0; j < n; j++) {
                if (a[x][j] == 0) {
                    a[x][j] = ++count;
                    y = j;
                }
            }
            // 右面赋值 x变 y不变
            for (int i = 0; i < n; i++) {
                if (a[i][y] == 0) {
                    a[i][y] = ++count;
                    x = i;
                }
            }
            // 下面赋值 x不变y变
            for (int j = n - 1; j >= 0; j--) {
                if (a[x][j] == 0) {
                    a[x][j] = ++count;
                    y = j;
                }
            }
            // 左面赋值 x变 y不变
            for (int i = n - 1; i >= 0; i--) {
                if (a[i][y] == 0) {
                    a[i][y] = ++count;
                    x = i;
                }
            }
        }
        // 打印出数组
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(a[i][j] + " ");
            }
            System.out.println();
        }
    }
}
